{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 非线性回归"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import tensorflow as tf\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nRK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x28c4202acc0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 使用numpy生成200个随机点\n",
    "x_data=np.linspace(-0.5,0.5,200)[:,np.newaxis]\n",
    "noise=np.random.normal(0,0.02,x_data.shape)\n",
    "y_data=np.square(x_data)+noise\n",
    "\n",
    "# 定义placeholder\n",
    "x=tf.placeholder(tf.float32,[None,1])\n",
    "y=tf.placeholder(tf.float32,[None,1])\n",
    "\n",
    "# 定义神经网络中间层\n",
    "Weights_L1=tf.Variable(tf.random_normal([1,10]))\n",
    "biases_L1=tf.Variable(tf.zeros([1,10]))\n",
    "Wx_plus_b_L1=tf.matmul(x,Weights_L1)+biases_L1\n",
    "L1=tf.nn.tanh(Wx_plus_b_L1)\n",
    "\n",
    "# 定义神经网络输出层\n",
    "Weights_L2=tf.Variable(tf.random_normal([10,1]))\n",
    "biases_L2=tf.Variable(tf.zeros([1,1]))\n",
    "Wx_plus_b_L2=tf.matmul(L1,Weights_L2)+biases_L2\n",
    "prediction=tf.nn.tanh(Wx_plus_b_L2)\n",
    "\n",
    "# 二次代价函数\n",
    "loss=tf.reduce_mean(tf.square(y-prediction))\n",
    "# 梯度下降法\n",
    "train_step=tf.train.GradientDescentOptimizer(0.1).minimize(loss)\n",
    "\n",
    "with tf.Session() as sess:\n",
    "    # 变量初始化\n",
    "    sess.run(tf.global_variables_initializer())\n",
    "    for _ in range(2000):\n",
    "        sess.run(train_step,feed_dict={x:x_data,y:y_data})\n",
    "    \n",
    "    # 获得预测值\n",
    "    prediction_value=sess.run(prediction,feed_dict={x:x_data,y:y_data})\n",
    "    # 画图\n",
    "    plt.figure()\n",
    "    plt.scatter(x_data,y_data)\n",
    "    plt.plot(x_data,prediction_value,'r-',lw=5)\n",
    "    plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
